package vip.xiaonuo.app.core.exception.enums;

import vip.xiaonuo.app.core.consts.AppEnumConstant;
import vip.xiaonuo.core.annotion.ExpEnumType;
import vip.xiaonuo.core.exception.enums.abs.AbstractBaseExceptionEnum;
import vip.xiaonuo.core.factory.ExpEnumCodeFactory;


/**
 * <p>Title : </p>
 * <p>Description : </p>
 * <p>DevelopTools : IDEA</p>
 * <p>DevelopSystem : Windows11</p>
 *
 * @Author : zxw
 * @Date 2023/9/11 15:58
 */
@ExpEnumType(module = AppEnumConstant.LEMON_APP_MODULE_EXP_CODE, kind = AppEnumConstant.AUTH_EXCEPTION_ENUM)
public enum AppUserAuthExceptionEnum implements AbstractBaseExceptionEnum {

    /**
     * 登录参数不能为空
     */
    LOGIN_PARAM_EMPTY(1, "登录参数不能为空"),

    /**
     * 账号不存在
     */
    ACCOUNT_NOT_EXITS(2, "对不起，您输入的账号不存在"),

    /**
     * 账号密码错误
     */
    ACCOUNT_PWD_ERROR(3, "账号或密码错误，请检查account或password参数"),

    /**
     * 密码错误
     */
    PWD_ERROR(3, "密码错误"),

    /**
     * 账号被冻结
     */
    ACCOUNT_FREEZE_ERROR(4, "账号被冻结，请联系管理员"),

    /**
     * 请求token为空
     */
    REQUEST_TOKEN_EMPTY(5, "请求token为空，请携带token访问本接口"),

    /**
     * token格式不正确，token请以Bearer开头
     */
    NOT_VALID_TOKEN_TYPE(6, "token格式不正确，token请以Bearer开头，并且Bearer后边带一个空格"),

    /**
     * 请求token错误
     */
    REQUEST_TOKEN_ERROR(7, "请求token错误"),

    /**
     * 登录已过期
     */
    LOGIN_EXPIRED(8, "登录已过期，请重新登录"),

    /**
     * 无登录用户
     */
    NO_LOGIN_USER(9, "无登录用户"),

    /**
     * 手机号码错误
     */
    PHONE_ERROR(10, "手机号码错误"),

    /**
     * 注册失败
     */
    REGISTER_ERROR(11, "注册失败"),

    /**
     * 确认登录方式
     */
    LOGIN_TYPE(12,"请确定登录方式");


    private final Integer code;

    private final String message;

    AppUserAuthExceptionEnum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    @Override
    public Integer getCode() {
        return ExpEnumCodeFactory.getExpEnumCode(this.getClass(), code);
    }

    @Override
    public String getMessage() {
        return message;
    }
}
